home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / zbpc_460.zip / GRAPHICS.EXE / HOUSE.BAS < prev    next >
BASIC Source File  |  1991-03-18  |  4KB  |  128 lines

  1. REM >>>>>>>>>> 'HOUSE' DRAWS A 3'D HOUSE <<<<<<<<<<<<<<
  2. MODE 7 ' Change to desired MODE for your video card
  3. DEFDBL A-Z : DEFINT I,J,K : CLS
  4. RH = 100 : D = 1000 : CX = 320 : CY = 550
  5. FOR IR = 75 TO 150 STEP 25 : RH = IR
  6.   FOR IZ = 4 TO 11 STEP 2 : TH = IZ * .1
  7.     FOR IP = 5 TO 15 STEP 2 : RESTORE : PH = IP * .1 : CLS
  8.       PRINT @(0,0) "VIEW TH="; TH, "PH="; PH, "RH="; RH;
  9.       S1 = SIN(TH) : C1 = COS(TH)
  10.       S2 = SIN(PH) : C2 = COS(PH)
  11.       REM DATA FOR HOUSE
  12.       N% = 11 : GOSUB "VISIBLE LINE"
  13.       DATA -11,-20, 23,  6,-20,  9,  6,-20,  0
  14.       DATA   6, 32,  0,  0, 32,  0,  0, 32, 20
  15.       DATA   0,  0, 20,  0,  0, 13,  0, 32, 13
  16.       DATA   6, 32,  9,  6,-20,  9
  17.       N% = 2 : GOSUB "VISIBLE LINE"
  18.       DATA   6, 32,  0,  6, 32,  9
  19.       N% = 2 : GOSUB "VISIBLE LINE"
  20.       DATA   6,  0,  0,  6,  0,  9
  21.       N% = 3 : GOSUB "VISIBLE LINE"
  22.       DATA   0, 32,  0,  0,  0,  0,  6,  0,  0
  23.       N% = 5 : GOSUB "VISIBLE LINE"
  24.       DATA   0, 32,  0,-11.5,32, 0,-11.5,33.5,0
  25.       DATA-11.5,33.5,33 ,-11.5,32,33
  26.       GOSUB "HIDDEN LINE": PLOT XP,YP TO XQ,YQ
  27.       DATA -11.5,32,33, -11.5,32,0
  28.       DATA   0,32,20,  -14,32,31.5
  29.       GOSUB "HIDDEN LINE 1"
  30.       DATA -14,0,31.5  ,-14,32,31.5
  31.       GOSUB "HIDDEN LINE": PLOT XP,YP TO XQ,YQ
  32.       DATA 0,0,20, -14,0,31.5
  33.       DATA -11,-20,23, -11,0,23
  34.       N% = 2 : GOSUB "VISIBLE LINE"
  35.       DATA -11.5,33.5,0, -16.5,33.5,0
  36.       N% = 2 : GOSUB "VISIBLE LINE"
  37.       DATA -11.5,33.5,33, -16.5,33.5,33
  38.       GOSUB "HIDDEN LINE": PLOT XP,YP TO XQ,YQ
  39.       DATA -16.5,33.5,0, -16.5,33.5,33
  40.       DATA -28,32,0, -16.5,32,0
  41.       GOSUB "HIDDEN LINE 1"
  42.       DATA -28,32,20, -14,32,33
  43.       N% = 2 : GOSUB "VISIBLE LINE"
  44.       DATA -28,32,20, -28,32,0
  45.       GOSUB "HIDDEN LINE"
  46.       DATA  6,-20,9,  6,32,9
  47.       DATA  0,0,0,    0,0,10
  48.     FOR I = 1 TO 5 : GOSUB "READ STUFF": GOSUB "WINDOWS": NEXT I
  49.       DATA 0,5,13.5, 0,14,13.5, 0,23,13.5
  50.       DATA 0,14,2,  0,23,2
  51.     FOR I = 1 TO 2 : GOSUB "READ STUFF": GOSUB "GARAGE DOOR": NEXT I
  52.       DATA 6,-11,0,  6,-1.5,0
  53.       N% = 4 : GOSUB "VISIBLE LINE"
  54.       DATA 0,6,0,  0,6,6.5
  55.       DATA 0,9,6.5,  0,9,0
  56.       TRON X
  57.     NEXT IP
  58.   NEXT IZ
  59. NEXT IR
  60. END
  61.  
  62. "PERSPECTIVE"
  63. REM PERSPECTIVE PROGECTION
  64. GOSUB "READ STUFF": REM READ X,Y,Z
  65. "PERSPECTIVE 1"
  66. XE = 0 - X * S1 + Y * C1
  67. YE = 0 - X * C1 * C2 - Y * S1 * C2 + Z * S2
  68. ZE = 0 - X * S2 * C1 - Y * S2 * S1 - Z * C2 + RH
  69. SX% = D * XE / ZE + CX
  70. SY% = CY - D * YE / ZE
  71. RETURN
  72.  
  73. "HIDDEN LINE"
  74. REM HIDDEN LINE ROUTINE
  75. GOSUB "PERSPECTIVE": XP = SX% : YP = SY%
  76. GOSUB "PERSPECTIVE": XQ = SX% : YQ = SY%
  77. "HIDDEN LINE 1"
  78. GOSUB "PERSPECTIVE": XV = SX% : YV = SY%
  79. GOSUB "PERSPECTIVE": XH = SX% : YH = SY%
  80. V1 = (XH - XV) * .5 : V2 = (YH - YV) * .5
  81. U1 = XP - XQ      : U2 = YP - YQ
  82. XT = XV + V1      : YT = YV + V2
  83. FOR I = 2 TO 7
  84.   VI = SGN(0. + (U2 * (XV - XQ) - U1 * (YV - YQ)) * (U2 * (XT - XQ) - U1 * (YT - YQ)))
  85.   V1 = V1 * .5 : V2 = V2 *.5
  86.   XT = XT + VI * V1 : YT = YT + VI * V2
  87. NEXT
  88. PLOT XV,YV TO XT,YT
  89. RETURN
  90.  
  91. "VISIBLE LINE"
  92. REM VISABLE LINE ROUTINE
  93. FOR I = 1 TO N%
  94.   GOSUB "PERSPECTIVE"
  95.   IF I = 1 THEN PLOT SX%, SY%
  96.   PLOT TO SX%, SY%
  97. NEXT I
  98. RETURN
  99.  
  100. "WINDOWS"
  101. REM WINDOWS SUBROUTINE
  102. GOSUB "PERSPECTIVE 1": PLOT SX%, SY%
  103. Y = Y + 4 : GOSUB "PERSPECTIVE 1": PLOT TO SX%, SY%
  104. Z = Z + 5.5:GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
  105. Y = Y - 4 : GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
  106. Z = Z - 5.5:GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
  107. Y = Y + 2 : GOSUB "PERSPECTIVE 1": PLOT SX%,SY%
  108. Z = Z + 5.5:GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
  109. Y = Y - 2 : Z = Z - 2.75 : GOSUB "PERSPECTIVE 1": PLOT SX%,SY%
  110. Y = Y + 4 : GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
  111. RETURN
  112.  
  113. "GARAGE DOOR" REM GARAGE DOOR ROUTINE
  114. GOSUB "PERSPECTIVE 1": PLOT SX%,SY%
  115. Z = Z + 7 : GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
  116. Y = Y - 7.5:GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
  117. Z = Z - 7 : GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
  118. Z = Z + 5 : Y = Y + 1 : GOSUB "PERSPECTIVE 1": PLOT SX%,SY%
  119. Z = Z + 1 : GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
  120. Y = Y + 5.5:GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
  121. Z = Z - 1 : GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
  122. Y = Y - 5.5:GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
  123. RETURN
  124.  
  125. "READ STUFF"
  126. READ X,Y,Z
  127. RETURN
  128.